Relation   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 33
rs 10
c 0
b 0
f 0
wmc 5

2 Functions

Rating   Name   Duplication   Size   Complexity  
A getRelationalFields 0 3 4
A tableSetup 0 3 1
1
import Field from "./Field";
2
import ForeignKey from "./Field/ForeignKey";
3
import {ModelStaticInterface, TableInterface} from "../../JeloquentInterfaces";
4
5
/**
6
 *
7
 */
8
export default class Relation extends Field {
9
10
    foreignKey: string;
11
12
    model: ModelStaticInterface;
13
14
    constructor(model: ModelStaticInterface, foreignKey: string = null, name: string = null) {
15
        const className = name ?? model.snakeCaseClassName;
16
        super(className);
17
        this.model = model;
18
        this.foreignKey = foreignKey;
19
    }
20
21
    set _value(value: Record<string, unknown>|Record<string, unknown>[]) {
22
        if (!Array.isArray(value)) {
23
            value = [value];
24
        }
25
26
        value.forEach((modelValue) => {
27
            this.model.insert(modelValue);
28
        });
29
    }
30
31
    getRelationalFields(): ForeignKey[] {
32
        return [new ForeignKey(this.foreignKey).setRelation(this)];
33
    }
34
35
    tableSetup(table: TableInterface): void {
36
        table.registerIndex(this.foreignKey);
37
    }
38
}